package com.hyt.it.ogt.kq.service.gov.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hyt.it.ogt.kq.service.gov.model.dto.TimeInfoResultDTO;
import com.hyt.it.ogt.kq.service.gov.model.entity.Time;
import com.hyt.it.ogt.kq.service.gov.model.entity.TimeRoomCandidateReport;
import com.hyt.it.ogt.kq.service.gov.model.vo.*;
import com.hyt.it.ogt.kq.service.gov.model.vo.overview.ExamMonitorCollectVO;

import java.util.List;

/**
 * <p>
 * 批次信息表 Mapper 接口
 * </p>
 *
 * @author huangyh
 * @since 2021-03-08
 */
public interface TimeMapper extends BaseMapper<Time> {

    /**
     * 查询所有的批次
     * @param taskId
     * @return
     */
    List<TaskTimeVO> selectTimeAll(String taskId);

    /**
     * 查询批次信息
     * @param taskId
     * @return
     */
    List<TaskTimeInfoVO> selectTimeInfo(String taskId);

    /**
     * 查询批次信息V2 -- 是排除考场
     * @param taskId
     * @return
     */
    List<TaskTimeInfoVO> selectTimeInfoV2(String taskId);

    /**
     * 根据批次查询科目
     * @param taskId
     * @param timeId
     * @return
     */
    List<SubjectVO> selectTimeSubject(String taskId, String timeId);

    /**
     * 获取批次科目信息
     * @param taskId
     * @param timeId
     * @return
     */
    List<SubjectInfoVO> selectTimeSubjectInfo(String taskId, String timeId);

    /**
     * 获取批次科目数量
     * @param taskId
     * @param timeId
     * @return
     */
    Integer selectTimeSubjectCount(String taskId, String timeId);

    /**
     * 根据批次查询考点
     * @param taskId
     * @param timeId
     * @return
     */
    List<TaskTimePlaceVO> selectTimePlace(String taskId, String timeId);

    /**
     * 根据批次考点查询考场
     * @param taskId
     * @param timeId
     * @param placeId
     * @return
     */
    List<TaskTimePlaceRoomVO> selectTimePlaceRoom(String taskId, String timeId, String placeId);

    /**
     * 获取考试系统批次信息返回结果
     * @param taskCode
     * @param placeCode
     * @return
     */
    List<TimeInfoResultDTO> getTimeInfoResult(String taskCode, String placeCode);

    /**
     * 考务包批次新
     * @param timeId
     * @return
     */
//    List<ExamTime> getExamTimesList(String timeId);

    /**
     * 获取考试汇总数据
     * @param taskId
     * @param timeId
     * @return
     */
    ExamMonitorCollectVO getExamMonitorData(String taskId, String timeId);

    /**
     * 获取批次考生数量
     * @param timeId
     * @param timeRoomIds
     * @return
     */
    List<TimeRoomCandidateReport> queryTimeCandidateReport(String timeId ,List<String> timeRoomIds);

    /**
     * 任务下所有批次是否存在跨天
     * @param taskId
     * @return
     */
    Integer isTimeCrossDay(String taskId);

    /**
     * 保存考试id
     * @param id
     * @param taskId
     * @param examCode
     * @return
     */
    Integer insertTimeExamCode(String id,String taskId,String timeId,String examCode);

    /**
     * 根据批次科目id获取批次数据
     * @param timeSubjectId 批次科目id
     * @return 批次数据
     */
    Time getByTimeSubjectId(String timeSubjectId);

}
